package jp.anago_dev.takarush_helper.database;

import jp.anago_dev.takarush_helper.database.DatabaseParameter.LocationColumn;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.provider.BaseColumns;

/**
 * 位置情報DBの操作を行います。
 * 
 * @author anago_dev
 * 
 */
public final class LocationDatabaseHandler {

    /**
     * データを挿入します。
     * 
     * @param db
     * @param latitude
     * @param longitude
     * @param time
     * @param accuracy
     */
    public static void insert(final SQLiteDatabase db, final double latitude, final double longitude, final long time, final float accuracy) {

        ContentValues contentValues = new ContentValues();
        contentValues.put(LocationColumn.LATITUDE, String.valueOf(latitude));
        contentValues.put(LocationColumn.LONGITUDE, String.valueOf(longitude));
        contentValues.put(LocationColumn.TIME, String.valueOf(time));
        contentValues.put(LocationColumn.ACCURACY, String.valueOf(accuracy));
        db.beginTransaction();
        try {

            db.insert(LocationColumn.TABLE_NAME, null, contentValues);
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }

    }

    /**
     * 全件取得します。
     * 
     * @param db
     *            {@link SQLiteDatabase}
     * @return 全件取得Cursorオブジェクト
     */
    public static Cursor query(final SQLiteDatabase db) {

        // SQLの作成
        final StringBuilder sql = new StringBuilder();
        sql.append("select ");
        sql.append(BaseColumns._ID);
        sql.append(",");
        sql.append(LocationColumn.LATITUDE);
        sql.append(",");
        sql.append(LocationColumn.LONGITUDE);
        sql.append(",");
        sql.append(LocationColumn.TIME);
        sql.append(",");
        sql.append(LocationColumn.ACCURACY);
        sql.append(" from ");
        sql.append(LocationColumn.TABLE_NAME);
        sql.append(";");

        Cursor cursor = db.rawQuery(sql.toString(), null);

        return cursor;

    }

}
